
package com.hlkj.pay.gateway.order;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.hlkj.framework.common.pojo.CommonResult;
import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.pay.app.merchant.ext.dto.order.ChannelComplaintOrderContext;
import com.hlkj.pay.app.merchant.ext.impl.wxpay.dto.WxComplaintHistoryDto;
import com.hlkj.pay.dto.order.notify.OrderComplaintNotifyDto;
import com.hlkj.pay.infrastructure.model.order.OrderComplaintDO;

/**
 * @author HlpayTeam
 * @date 2024/11/06 13:28
 */
public interface IChannelComplaintGateway {
    /**
     *
     * @param channelCode
     * @return
     */
    boolean extensionExist(String channelCode);

    CommonResult<List<OrderComplaintDO>> queryComplaintPage(ChannelComplaintOrderContext channelComplaintOrderContext);

    CommonResult<OrderComplaintNotifyDto> complaintStatusParse(HttpServletRequest request, ChannelComplaintOrderContext channelComplaintOrderContext);

    CommonResult<OrderComplaintNotifyDto> queryComplaintDetail(ChannelComplaintOrderContext channelComplaintOrderContext);

    CommonResult<String> query(ChannelComplaintOrderContext channelComplaintOrderContext);

    CommonResult<String> saveComplaintNotifyUrl(ChannelComplaintOrderContext channelComplaintOrderContext);

    CommonResult<String> replyUser(ChannelComplaintOrderContext channelComplaintOrderContext);

    CommonResult<String> complete(ChannelComplaintOrderContext channelComplaintOrderContext);

    CommonResult<String> refund(ChannelComplaintOrderContext channelComplaintOrderContext);

    CommonResult<PageResult<WxComplaintHistoryDto>> queryHistoryPage(ChannelComplaintOrderContext channelComplaintOrderContext);
}
